package com.etc.controller;

import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import com.etc.entity.User;

@Controller
@RequestMapping("macapi")
public class ModelAttributeController {

	// ① @ModelAttribute一个功能是：正常接收视图传递过来的参数
	// ② 再一个功能是：将这个参数信息作为请求范围的数据继续传递给视图
	// 1.放在方法参数内
	@RequestMapping(value = "test1")
	public String test1(@ModelAttribute(value = "user") User user) {
		user.setName("小不点");
		// 会将user对象存放到请求范围中，以前需要使用model的方法来存放
		return "mac/test1";// 转发到相应目录的相应页面=>/WEB-INF/jsp/mac/test1.jsp
	}

	// ① @ModelAttribute一个功能是：正常接收视图传递过来的参数
	// ② 再一个功能是：将这个参数信息作为请求范围的数据继续传递给视图
	// 2.放在方法上面
	@RequestMapping(value="test2") // 定义一个映射地址
	@ModelAttribute(value = "user")
	public List<User> test2() {
		User u1 = new User();
		u1.setId(1);
		u1.setName("小白");
		u1.setPwd("123");

		User u2 = new User();
		u2.setId(2);
		u2.setName("小黑");
		u2.setPwd("456");

		// Arrays.asList()数组转换成集合
		// 返回的视图资源为 /WEB-INF/jsp/macapi/test2.jsp(与上面的映射地址同名)
		return Arrays.asList(u1, u2);
	}

	// 普通方法 前 加一个 @ModelAttribute
	@ModelAttribute(value = "user")
	public void test3() {
		System.out.println("*********test3*******");
	}

	// 普通方法 前 加一个 @ModelAttribute
	@ModelAttribute()
	public void test4() {
		System.out.println("*********test4*******");
	}

	// 普通方法 前 加一个 @ModelAttribute
	@ModelAttribute(value = "user")
	public User test5() {
		User u = new User();
		u.setName("test5");
		System.out.println("*********test5*******");
		return u;
	}
}
